#include <stdio.h>
#include <unistd.h>
#include "ohos_init.h"
#include "cmsis_os2.h"
#include "iot_gpio.h"
#include "hi_gpio.h"
#include "hi_io.h"

#define LED_GPIO  HI_GPIO_IDX_8  // ax100  
#define KEY_GPIO  HI_GPIO_IDX_14 // ax100  

IotGpioValue g_ledValue = IOT_GPIO_VALUE0;
int g_keyJitterFlag = 0;


void KeyISR( char *arg){
    if (g_keyJitterFlag == 1){// 
     return;
    }
   
           printf("Key Down\r\n");
   
    if(g_ledValue == IOT_GPIO_VALUE0 ){
     g_ledValue = IOT_GPIO_VALUE1; 
                   printf("Len On\r\n");
    }
    else {
     g_ledValue = IOT_GPIO_VALUE0; 
                   printf("Len Off\r\n");
    }
   
    g_keyJitterFlag = 1;
   }

   static void GpioKeyMain( void ) {
    hi_io_set_func(LED_GPIO, HI_IO_FUNC_GPIO_8_GPIO);
    IoTGpioInit( LED_GPIO );
    IoTGpioSetDir( LED_GPIO, IOT_GPIO_DIR_OUT );

    hi_io_set_func(KEY_GPIO, HI_IO_FUNC_GPIO_14_GPIO);
    IoTGpioInit( KEY_GPIO );
    IoTGpioSetDir( KEY_GPIO, IOT_GPIO_DIR_IN );
    IoTGpioRegisterIsrFunc( KEY_GPIO, IOT_INT_TYPE_EDGE, IOT_GPIO_EDGE_FALL_LEVEL_LOW, KeyISR, NULL );
    IoTGpioSetIsrMask( KEY_GPIO, 0 );

    printf("IoT-LedKey Init OK\r\n");
    while (1) {
 g_keyJitterFlag = 0; //

        IoTGpioSetOutputVal( LED_GPIO, g_ledValue );
        osDelay( 50 );
    }

    return ;
}

SYS_RUN( GpioKeyMain );

   
   